using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;

using tp1.Entidades;

namespace tp1.Escena
{
    enum TipoNube { NubeLarga, NubeMediana, NubeCorta }

    class Nube
    {
        List<Punto> lista = new List<Punto>();

        Punto centro = new Punto();
        TipoNube tipo;

        Punto extremo = new Punto(1,0);

        public Nube(TipoNube tipo, Punto centro)
        {
            this.tipo = tipo;
            this.centro = centro;
        }

        public void Dibujar()
        {
            lista.Clear();
            Pipeline.LineColor(Color.White);
            Pipeline.FillColor(Color.White);


            lista.Add(new Punto(-1,-1));
            lista.Add(new Punto(1,-1));
            lista.Add(new Punto(1,1));
            lista.Add(new Punto(-1,1));
            Pipeline.CargarIdentidad();
            Pipeline.Trasladar(centro.Xint, centro.Yint);
            switch (tipo)
            {
                case TipoNube.NubeCorta:
                    Pipeline.Escalar(25, 15);
                    break;
                case TipoNube.NubeMediana:
                    Pipeline.Escalar(50, 15);
                    break;
                case TipoNube.NubeLarga:
                    Pipeline.Escalar(100, 15);
                    break;
            }
            Pipeline.Dibujar(Tipo.POLIGONO, lista);
            Pipeline.CargarIdentidad();
            Pipeline.LineColor(Color.White);
            lista.Clear();

            lista.Add(new Punto(0,0));
            lista.Add(new Punto(50,0));
            switch (tipo)
            {
                case TipoNube.NubeCorta:
                    Pipeline.Trasladar(centro.Xint - 25, centro.Yint);
                    lista.Add(new Punto(160, 0));
                    lista.Add(new Punto(210, 0));
                    break;
                case TipoNube.NubeMediana:
                    lista.Add(new Punto(330, 0));
                    lista.Add(new Punto(380, 0));
                    Pipeline.Trasladar(centro.Xint-50, centro.Yint);
                    break;
                case TipoNube.NubeLarga:
                    lista.Add(new Punto(660, 0));
                    lista.Add(new Punto(710, 0));
                    Pipeline.Trasladar(centro.Xint - 100, centro.Yint);
                    break;
            }
            Pipeline.Escalar(0.30, 0.30);
            Pipeline.Dibujar(Tipo.CIRCULO, lista);
        }
    }
}
